home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-05-04 | 7.6 KB | 230 lines |
- 10 REM ************************************************************
- 20 REM *** DISKETTE LABEL PRINTER - R. W. LENNOX (313)689-6139 ***
- 30 REM *** COMMENT LINES OPTIONAL FOR 4" LABELS -jw 12/29/84 ***
- 40 REM *** USES 1 1/2 x 4 INCH 1-UP LABEL STOCK (LABELSMC) ***
- 50 REM *** MODIFIED FOR THE IBM GRAPHICS PRINTER 04/19/85 ***
- 55 REM *** BY A.R. TOWERS ***
- 60 REM *** REQUIRES 80 COLUMN COLOR MONITOR. ***
- 70 REM *** WRITTEN FOR DOS 2.0 - BUT NO DIFFERENCES ARE ***
- 80 REM *** ANTICIPATED RUNNING UNDER DOS 2.1 ***
- 90 REM *** REQUIRED FILE - DIRECTRY.COM FROM "SOFTTALK" 01/84 ***
- 100 REM *** IS ENCLUDED IN THIS PACKAGE. ***
- 110 REM ************************************************************
- 120 SCREEN 0:KEY OFF:DEF SEG
- 125 COLOR 13,1,1:
- 130 SUBRT$=STRING$(159,32)
- 140 SUBLC%=VARPTR(SUBRT$)
- 150 GOSUB 2270
- 160 BLOAD "DIRECTRY.COM",DIRECT
- 170 FCB$=STRING$(33,32)
- 180 DTA$=STRING$(33,32)
- 190 DIM PROG$(64)
- 200 DIM PROGEXT$(64)
- 210 DIM CPROG$(64)
- 220 DIM PROGSEL(64)
- 230 DIM DIRLST$(512)
- 240 FILLER$=STRING$(12,32)
- 250 COMA$=""
- 260 COMB$=" Southern Microcomputer Company"
- 270 COMC$=" Miami Tampa"
- 280 NDATE$=LEFT$(DATE$,6)+RIGHT$(DATE$,2)
- 290 FOR LOOP%=0 TO 512:DIRLST$(LOOP%)=FILLER$:NEXT
- 300 LPRINT CHR$(27);"G"; 'SET DOUBLE STRIKE
- 310 LPRINT CHR$(27);"A";CHR$(9);CHR$(27);CHR$(50);
- 320 LPRINT CHR$(27);"E"; 'SET EMPHASIZED
- 330 'LPRINT CHR$(27);"Q";CHR$(85); 'SET WIDTH
- 340 N=0:COUNT%=0
- 350 FOR X=1 TO 64:PROGSEL(X)=0:NEXT X
- 360 CLS
- 370 COLOR 14,1,1
- 380 LOCATE 1,15:PRINT " "
- 390 LOCATE 2,15:PRINT " DISKETTE LABEL PRINT "
- 400 LOCATE 3,15:PRINT " "
- 410 '
- 420 LOCATE 5,15:PRINT "THIS PROGRAM ALLOWS PRODUCTION OF DISKETTE"
- 430 LOCATE 6,15:PRINT "LABELS USING DIRECTORY DATA AND A USER"
- 440 LOCATE 7,15:PRINT "SUPPLIED TITLE. INCLUSION OF DIRECTORY"
- 450 LOCATE 8,15:PRINT "ENTRIES (ALL/NONE/SELECTED) IS CONTROLLED"
- 460 LOCATE 9,15:PRINT "BY THE OPERATOR. "
- 470 LOCATE 12,18:PRINT "ENTER 'X' FOR SYSTEM - ESCape TO END"
- 480 '
- 490 LOCATE 15,19:PRINT " "
- 500 LOCATE 15,19:PRINT "ENTER TARGET DISK (ie. A,B,C,D): ";
- 510 GOSUB 2210:DSK$=KY$
- 520 HIT%=INSTR("ABCDX",DSK$)
- 530 IF HIT%=0 THEN GOTO 560 ELSE PRINT DSK$
- 540 IF DSK$="X" THEN 2180
- 550 GOTO 580
- 560 LOCATE 18,22:PRINT "INCORRECT TARGET DISK ENTERED"
- 570 BEEP:GOTO 480
- 580 LOCATE 18,22:PRINT "ENTER 'Y' TO READ DIRECTORY: ";
- 590 GOSUB 2210:DTY$=KY$:PRINT DTY$
- 600 CLS
- 610 WIDTH 80
- 620 IF DTY$="Y" THEN 630 ELSE 750
- 630 LOCATE ,,0:GOSUB 2270
- 640 REM GET DIRECTORY AND SORT
- 650 CALL DIRECT(DSK$,FCB$,DTA$,DIRLST$(0),COUNT%)
- 660 F=1:I=0:LOCATE 10,20:PRINT "SORTING......PLEASE WAIT"
- 670 IF DIRLST$(I)>DIRLST$(I+1) THEN SWAP DIRLST$(I),DIRLST$(I+1):F=0
- 680 I=I+1:IF I<COUNT%-1 THEN 670
- 690 IF F= 0 THEN 660
- 700 CLS
- 710 LOCATE 2,10:PRINT "DIRECTORY ON DRIVE "DSK$": CONTAINS "COUNT%" ENTRIES"
- 720 IF COUNT%>55 THEN COUNT%=50:PRINT "ONLY 50 ENTRIES ALLOWED"
- 730 PRINT
- 740 FOR LOOP=0 TO COUNT%-1:PRINT DIRLST$(LOOP)SPC(6);:NEXT:PRINT
- 750 '
- 760 LOCATE 17,5:PRINT " "
- 770 LOCATE 17,5:INPUT "ENTER DISKETTE LABEL TITLE:",TITLE$
- 780 '
- 790 IF LEN(TITLE$) < 34 THEN 820
- 800 BEEP:LOCATE 21,10:PRINT "MAXUMUM OF 33 CHARACTERS ALLOWED"
- 810 GOTO 750
- 820 LOCATE 21,10:PRINT " "
- 830 '
- 840 LOCATE 18,5:PRINT " "
- 850 LOCATE 18,43:PRINT"001"
- 860 LOCATE 18,5:INPUT "ENTER DISKETTE VERSION NUMBER (000) ",DSER$
- 870 IF DSER$="" THEN DSER$="001"
- 880 LOCATE 19,5:PRINT " "
- 890 LOCATE 19,43:PRINT"DOS 2.1"
- 900 LOCATE 19,5:INPUT "ENTER OPERATING SYSTEM (ie. DOS 2.1) ",OPER$
- 910 IF OPER$="" THEN OPER$="DOS 2.1"
- 920 LOCATE 20,5:PRINT " "
- 930 LOCATE 20,43:PRINT"DSDD"
- 940 LOCATE 20,5:INPUT "ENTER DISKETTE TYPE (ie. DSDD, SSSD) ",DTYPE$
- 950 IF DTYPE$="" THEN DTYPE$="DSDD"
- 960 LOCATE 21,5:PRINT " "
- 970 LOCATE 21,43:PRINT"9-SEC"
- 980 LOCATE 21,5:INPUT "ENTER NUMBER OF SECTORS (ie. 9-SEC) ",STYPE$
- 990 IF STYPE$="" THEN STYPE$="9-SEC"
- 1000 LOCATE 22,5:PRINT " "
- 1010 LOCATE 22,43:PRINT NDATE$
- 1020 LOCATE 22,5:INPUT "ENTER FORMAT DATE (8 CHAR - ANY FORM) ",FDATE$
- 1030 IF FDATE$="" THEN FDATE$=NDATE$ ELSE NDATE$=FDATE$
- 1040 LOCATE 23,5:PRINT " "
- 1050 LOCATE 23,43:PRINT"IBM"
- 1060 LOCATE 23,5:INPUT "ENTER DISKETTE MANUFACTURER ",MTYPE$
- 1070 IF MTYPE$="" THEN MTYPE$="IBM"
- 1080 LNE=2:CLS
- 1090 LOCATE 1,2:PRINT "THE FOLLOWING PROGRAMS / FILES ARE ON THIS DISK:"
- 1100 GOSUB 1280 'COMPRESS NAMES
- 1110 FOR LOOP=0 TO COUNT%-1 STEP 4
- 1120 LNE=LNE+1:PST=2
- 1130 FOR LOOP1=LOOP TO LOOP+3
- 1140 IF DIRLST$(LOOP1)=FILLER$ THEN 1170
- 1150 LOCATE LNE,PST:PRINT LOOP1+1:LOCATE LNE,PST+3:PRINT"-"
- 1160 LOCATE LNE,PST+4:PRINT DIRLST$(LOOP1)
- 1170 PST=PST+19
- 1180 NEXT LOOP1
- 1190 NEXT LOOP
- 1200 '
- 1210 LOCATE 20,1:PRINT "ENTER NUMBER OF FILE NAME TO BE PRINTED ON LABEL"
- 1220 LOCATE 21,1:PRINT "SELECTED ENTRIES WILL BE HIGHLIGHTED ON THE SCREEN"
- 1230 LOCATE 22,1:INPUT "ENTER A ZERO WHEN DONE / 99 TO SELECT ALL FILES";P
- 1240 LOCATE 22,50:PRINT " "
- 1250 IF P=99 THEN 1270
- 1260 IF P>COUNT% THEN BEEP:GOTO 1230
- 1270 GOTO 1390
- 1280 REM COMPRESS PROGRAM NAME AND EXTENSION
- 1290 FOR X%=0 TO COUNT%-1
- 1300 DIRENT$=""
- 1310 FOR Y%=1 TO 12
- 1320 CH$=MID$(DIRLST$(X%),Y%,1)
- 1330 IF CH$=" " THEN 1350
- 1340 DIRENT$=DIRENT$+CH$
- 1350 NEXT Y%
- 1360 DIRLST$(X%)=DIRENT$
- 1370 NEXT X%
- 1380 RETURN
- 1390 IF P=0 THEN 1620
- 1400 IF P<>99 THEN 1450
- 1410 FOR N=0 TO COUNT%-1
- 1420 PROGSEL(N)=1
- 1430 NEXT N
- 1440 GOTO 1620
- 1450 IF P<1 OR P>64 THEN LOCATE 23,50:PRINT"NOT ACCEPTED":BEEP:GOTO 1230
- 1460 LOCATE 23,50:PRINT" "
- 1470 N=N+1
- 1480 PROGSEL(P-1)=1
- 1490 IF N>55 THEN 1620
- 1500 LNE=INT((P/4)+0.99)+2
- 1510 LNX=LNE-2
- 1520 BYT=P-((LNX-1)*4)
- 1530 IF BYT=1 THEN BYT=2:GOTO 1570
- 1540 IF BYT=2 THEN BYT=21
- 1550 IF BYT=3 THEN BYT=40
- 1560 IF BYT=4 THEN BYT=59
- 1570 LOCATE LNE,BYT
- 1590 PRINT P:LOCATE LNE,BYT+3:PRINT"-":LOCATE LNE,BYT+4:PRINT DIRLST$(P-1)
- 1600 '
- 1610 GOTO 1200
- 1620 REM SET UP LABEL
- 1630 LOCATE 23,50:PRINT"WORKING "
- 1640 CLS
- 1650 '
- 1660 GOTO 1760
- 1670 LOCATE 5,5:PRINT "YOU MAY ENTER THREE LINES OF COMMENTS - 70 CHAR. EACH"
- 1680 LOCATE 6,5:PRINT "LINE 3 MAY BE PRE-DEFINED. IF SO IT WILL BE BYPASSED."
- 1690 LOCATE 9,5:PRINT "[ ]"
- 1700 LOCATE 10,5:PRINT "[ ]"
- 1710 LOCATE 11,5:PRINT "[ ]"
- 1720 IF COMC$="" THEN 1730 ELSE LOCATE 11,6:PRINT COMC$
- 1730 LOCATE 9,6:INPUT "",COMA$
- 1740 LOCATE 10,6:INPUT "",COMB$
- 1750 IF COMC$="" THEN LOCATE 11,6:INPUT "",COMC$
- 1760 LOCATE 10,20:INPUT "HOW MANY COPIES OF LABEL DO YOU WANT ";NC$:NC=VAL(NC$):IF NC<1 THEN 1760
- 1770 IF N>35 THEN JW= 11 ELSE JW= 7
- 1780 FOR LL= 1 TO NC
- 1790 LOCATE 10,20:PRINT " "
- 1800 IF INKEY$=CHR$(27) THEN 2160
- 1810 LOCATE 10,20:PRINT " PRINTING LABEL ";LL;" OF ";NC
- 1820 LPRINT TAB(1) TITLE$;
- 1830 LPRINT TAB(36) "#";DSER$
- 1840 LPRINT TAB(1) MTYPE$;
- 1850 LPRINT TAB(11) OPER$;" ";DTYPE$;" ";STYPE$;" ";FDATE$
- 1860 LPRINT "---------------------------------------"
- 1870 LPRINT CHR$(27);"F"; 'SET EMPHASIZED OFF
- 1880 LPRINT CHR$(15);
- 1890 LPRINT CHR$(27);"A";CHR$(6);CHR$(27);CHR$(50);
- 1900 LPRINT CHR$(27);"S";CHR$(48);
- 1910 LNO=0:COL=0
- 1920 FOR X=0 TO 54
- 1930 IF PROGSEL(X)=0 THEN 2020
- 1940 COL=COL+1:IF X=0 THEN COL=1
- 1950 IF COL=1 THEN LPRINT TAB(3) DIRLST$(X);
- 1960 IF COL=2 THEN LPRINT TAB(16) DIRLST$(X);
- 1970 IF COL=3 THEN LPRINT TAB(29) DIRLST$(X);
- 1980 IF COL=4 THEN LPRINT TAB(42) DIRLST$(X);
- 1990 IF COL=5 THEN LPRINT TAB(55) DIRLST$(X):COL=0:LNO=LNO+1
- 2000 ' IF COL=6 THEN LPRINT TAB(68) DIRLST$(X):COL=0:LNO=LNO+1
- 2010 IF LNO=JW THEN 2030
- 2020 NEXT X
- 2030 IF COL>0 THEN LPRINT:LNO=LNO+1
- 2040 FOR X=1 TO (JW-LNO):LPRINT:NEXT X
- 2050 IF JW=11 THEN 2120 'SKIP DOTTED LINE AND COMMENTS IF MORE THAN 35 ENTRIES
- 2060 LPRINT "------------------------------------------------------------------"
- 2070 GOTO 2090
- 2080 LPRINT TAB(3) COMA$
- 2090 LPRINT TAB(3) COMB$
- 2100 LPRINT TAB(3) COMC$
- 2110 LPRINT
- 2120 LPRINT CHR$(27);"T"; 'SET SUPERSCRIPT OFF
- 2130 LPRINT CHR$(27);"E"; 'SET EMPHASIZED
- 2140 LPRINT CHR$(27);"A";CHR$(9);CHR$(27);CHR$(50);
- 2150 NEXT LL
- 2160 CLS:LOCATE 10,20:PRINT"REPRINT THIS LABEL? (`Y' TO REPRINT)"
- 2170 GOSUB 2210:IF KY$="Y" THEN 1760 ELSE LOCATE 10,20:PRINT " WAIT.........RELOADING ":GOTO 290
- 2180 CLS
- 2190 SYSTEM
- 2200 END
- 2210 REM GET IN KEY AND OR
- 2220 KY$=INKEY$:IF KY$="" THEN 2220
- 2230 IF KY$=CHR$(27) THEN COLOR 13,1,1:END
- 2240 IF KY$<CHR$(97) OR KY$>CHR$(122) THEN 2260
- 2250 KY$=CHR$(ASC(KY$)-32)
- 2260 RETURN
- 2270 DIRECT=PEEK(SUBLC%+1)+PEEK(SUBLC%+2)*256
- 2280 RETURN
-